/**
 * 给定一个非负数组A，问有多少个非空区间累加和不小于K
 * 维护left和right双指针，
 * 任何时候当前[left, right]区间满足条件时
 * 可知以当前left开头的区间一共有N-right+1个满足条件。
 * 流程可以如下
 * 1 ++right直到当前区间满足条件，累加答案
 * 2 ++left直到当前区间不满足条件，期间满足条件的每一个区间都要累加答案
 * 3 如果不退出则回到1
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using Real = long double;
using llt = long long;
using vi  =vector<int>;
using pii = pair<int, int>;
using vvi = vector<vi>;
using vpii = vector<pii>;

int N;
vi A;
llt K;

llt proc(){
    llt ans = 0;
    int left = 0;
    int right = 0;
    llt tmp = 0;
    while(1){
        while(right < N and tmp < K){
            tmp += A[right++];
        }
        if(tmp >= K){
            ans += N - right + 1;
        }
        while(left < N){
            tmp -= A[left++];
            if(tmp >= K){
                ans += N - right + 1;
            }else{
                break;
            }
        }
        if(left == N) break;
    }
    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--){
        cin >> N >> K;
        A.assign(N, {});
        for(auto & i : A) cin >> i;
        cout << proc() << "\n";
    }
    return 0;
}